<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>mtlb_prod</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>M2SCI function</center>
    <div align="right">Last update : 09/04/2004</div>
    <p>
      <b>mtlb_prod</b> - Matlab prod emulation function</p>
    <h3>
      <font color="blue">Description</font>
    </h3>
    <p>Matlab and Scilab <tt>
        <b>prod</b>
      </tt> behave differently in some particular cases:</p>
    <dl>
      <dd>
        <b></b>
        <dd>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with one input: Matlab <tt>
              <b>prod</b>
            </tt> threts the values along the first
	non-singleton dimension of input while Scilab <tt>
              <b>prod</b>
            </tt> threats all values of input.
        </li>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with two inputs: Matlab <tt>
              <b>prod</b>
            </tt> can be used with second input giving
	a non-existing dimension of first input while Scilab <tt>
              <b>prod</b>
            </tt> returns an error message.
        </li>
        </dd>
      </dd>
    </dl>
    <p>
    The function <tt>
        <b>mtlb_prod(A[,dim])</b>
      </tt> is used by
    <tt>
        <b>mfile2sci</b>
      </tt> to replace <tt>
        <b>prod(A[,dim])</b>
      </tt> when it was not
    possible to know what were the inputs while porting Matlab code to Scilab. This function will
    determine the correct semantic at run time. If you want to have a
    more efficient code it is possible to replace <tt>
        <b>mtlb_prod</b>
      </tt> calls:
    </p>
    <dl>
      <dd>
        <b></b>
        <dd>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with one input, if <tt>
              <b>A</b>
            </tt> is an empty matrix, a scalar or a vector,
        <tt>
              <b>mtlb_prod(A)</b>
            </tt> may be replaced by <tt>
              <b>prod(A)</b>
            </tt>
          </li>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with one input, if <tt>
              <b>A</b>
            </tt> is a not-empty matrix,
        <tt>
              <b>mtlb_prod(A)</b>
            </tt> may be replaced by <tt>
              <b>prod(A,1)</b>
            </tt>
          </li>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with one input, if <tt>
              <b>A</b>
            </tt> is a multidimensional array,
        <tt>
              <b>mtlb_prod(A)</b>
            </tt> may be replaced by <tt>
              <b>prod(A,firstnonsingleton(A))</b>
            </tt>
          </li>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with two inputs, if <tt>
              <b>dim</b>
            </tt> is lesser than the number of dimensions of <tt>
              <b>A</b>
            </tt>
            <tt>
              <b>mtlb_prod(A,dim)</b>
            </tt> may be replaced by <tt>
              <b>prod(A,dim)</b>
            </tt>
          </li>
        </dd>
      </dd>
    </dl>
    <p>Caution: <tt>
        <b>mtlb_prod</b>
      </tt> has not to be used for hand coded functions.</p>
    <h3>
      <font color="blue">See Also</font>
    </h3>
    <p>
      <a href="firstnonsingleton.htm">
        <tt>
          <b>firstnonsingleton</b>
        </tt>
      </a>,&nbsp;&nbsp;</p>
    <h3>
      <font color="blue">Authors</font>
    </h3>
    <dl>
      <dd>
        <b></b>V.C.</dd>
    </dl>
  </body>
</html>
